// StrPalindrome
// 回文
#include <string>
#include <iostream>
#include <algorithm>

using namespace std;

// string -> vector<char>
bool isPalindrome(const string &str) {
  // 第一遍 遍历 str
  // 找到 str 的逆序

  // 第二遍 遍历 str
  // 判断是否相等
  string rev = str;
  reverse(rev.begin(), rev.end());
  return rev == str;
}

bool isPalindrome1(const string &str) {
  /*
  A B B B B A
        ^l
      ^r

  如果 l >= r, str 一定是回文
  否则，就不是

  只要 l < r，就一直循环比较
  */

  string::const_iterator l = str.cbegin();
  auto r = str.cend() - 1;

  while (l < r) {
    if (*l != *r) {
      return false;
    }

    ++l;
    --r;
  }

  return true;
}

int main(int argc, char const *argv[])
{
  /* code */
  return 0;
}
